#ifndef STACK_HPP
#define STACK_HPP

class OutOfRange {
};

class LengthError {

};

template < class T, class Container = deque<T> >
class Stack {
	explicit stack ( const Container& ctnr = Container() ){}
	
	bool empty ( ) const { return c.empty(); }

	size_type size ( ) const { return c.size(); }

	value_type& top ( ) { return c.front(); }
	const value_type& top ( ) const { return c.front(); }
	void push ( const T& x ) { c.push_front(x); }
	void pop() { c.pop_front(); }

private:
	Container c;	
};


#endif
